home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / dev / gcc / geninline_920614.lha / inline-2.0 / expansion.h < prev    next >
C/C++ Source or Header  |  1992-06-14  |  9KB  |  303 lines

  1. #ifndef _INLINE_EXPANSION_H
  2. #define _INLINE_EXPANSION_H
  3.  
  4. #include <sys/cdefs.h>
  5. #include <inline/stubs.h>
  6.  
  7. __BEGIN_DECLS
  8.  
  9. #ifndef BASE_EXT_DECL
  10. #define BASE_EXT_DECL extern struct ExpansionBase*  ExpansionBase;
  11. #endif
  12. #ifndef BASE_PAR_DECL
  13. #define BASE_PAR_DECL
  14. #define BASE_PAR_DECL0 void
  15. #endif
  16. #ifndef BASE_NAME
  17. #define BASE_NAME ExpansionBase
  18. #endif
  19.  
  20. static __inline BOOL 
  21. AddBootNode (BASE_PAR_DECL long bootPri,unsigned long flags,struct DeviceNode *deviceNode,struct ConfigDev *configDev)
  22. {
  23.   BASE_EXT_DECL
  24.   register BOOL  _res  __asm("d0");
  25.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  26.   register long d0 __asm("d0") = bootPri;
  27.   register unsigned long d1 __asm("d1") = flags;
  28.   register struct DeviceNode *a0 __asm("a0") = deviceNode;
  29.   register struct ConfigDev *a1 __asm("a1") = configDev;
  30.   __asm __volatile ("jsr a6@(-0x24)"
  31.   : "=r" (_res)
  32.   : "r" (a6), "r" (d0), "r" (d1), "r" (a0), "r" (a1)
  33.   : "a0","a1","d0","d1");
  34.   *(char *)a0 = *(char *)a0;  *(char *)a1 = *(char *)a1;
  35.   return _res;
  36. }
  37. static __inline void 
  38. AddConfigDev (BASE_PAR_DECL struct ConfigDev *configDev)
  39. {
  40.   BASE_EXT_DECL
  41.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  42.   register struct ConfigDev *a0 __asm("a0") = configDev;
  43.   __asm __volatile ("jsr a6@(-0x1e)"
  44.   : /* no output */
  45.   : "r" (a6), "r" (a0)
  46.   : "a0","a1","d0","d1");
  47.   *(char *)a0 = *(char *)a0;
  48. }
  49. static __inline BOOL 
  50. AddDosNode (BASE_PAR_DECL long bootPri,unsigned long flags,struct DeviceNode *deviceNode)
  51. {
  52.   BASE_EXT_DECL
  53.   register BOOL  _res  __asm("d0");
  54.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  55.   register long d0 __asm("d0") = bootPri;
  56.   register unsigned long d1 __asm("d1") = flags;
  57.   register struct DeviceNode *a0 __asm("a0") = deviceNode;
  58.   __asm __volatile ("jsr a6@(-0x96)"
  59.   : "=r" (_res)
  60.   : "r" (a6), "r" (d0), "r" (d1), "r" (a0)
  61.   : "a0","a1","d0","d1");
  62.   *(char *)a0 = *(char *)a0;
  63.   return _res;
  64. }
  65. static __inline void 
  66. AllocBoardMem (BASE_PAR_DECL unsigned long slotSpec)
  67. {
  68.   BASE_EXT_DECL
  69.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  70.   register unsigned long d0 __asm("d0") = slotSpec;
  71.   __asm __volatile ("jsr a6@(-0x2a)"
  72.   : /* no output */
  73.   : "r" (a6), "r" (d0)
  74.   : "a0","a1","d0","d1");
  75. }
  76. static __inline struct ConfigDev *
  77. AllocConfigDev (BASE_PAR_DECL0)
  78. {
  79.   BASE_EXT_DECL
  80.   register struct ConfigDev * _res  __asm("d0");
  81.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  82.   __asm __volatile ("jsr a6@(-0x30)"
  83.   : "=r" (_res)
  84.   : "r" (a6)
  85.   : "a0","a1","d0","d1");
  86.   return _res;
  87. }
  88. static __inline APTR 
  89. AllocExpansionMem (BASE_PAR_DECL unsigned long numSlots,unsigned long slotAlign)
  90. {
  91.   BASE_EXT_DECL
  92.   register APTR  _res  __asm("d0");
  93.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  94.   register unsigned long d0 __asm("d0") = numSlots;
  95.   register unsigned long d1 __asm("d1") = slotAlign;
  96.   __asm __volatile ("jsr a6@(-0x36)"
  97.   : "=r" (_res)
  98.   : "r" (a6), "r" (d0), "r" (d1)
  99.   : "a0","a1","d0","d1");
  100.   return _res;
  101. }
  102. static __inline void 
  103. ConfigBoard (BASE_PAR_DECL APTR board,struct ConfigDev *configDev)
  104. {
  105.   BASE_EXT_DECL
  106.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  107.   register APTR a0 __asm("a0") = board;
  108.   register struct ConfigDev *a1 __asm("a1") = configDev;
  109.   __asm __volatile ("jsr a6@(-0x3c)"
  110.   : /* no output */
  111.   : "r" (a6), "r" (a0), "r" (a1)
  112.   : "a0","a1","d0","d1");
  113.   *(char *)a0 = *(char *)a0;  *(char *)a1 = *(char *)a1;
  114. }
  115. static __inline void 
  116. ConfigChain (BASE_PAR_DECL APTR baseAddr)
  117. {
  118.   BASE_EXT_DECL
  119.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  120.   register APTR a0 __asm("a0") = baseAddr;
  121.   __asm __volatile ("jsr a6@(-0x42)"
  122.   : /* no output */
  123.   : "r" (a6), "r" (a0)
  124.   : "a0","a1","d0","d1");
  125.   *(char *)a0 = *(char *)a0;
  126. }
  127. static __inline struct ConfigDev *
  128. FindConfigDev (BASE_PAR_DECL struct ConfigDev *oldConfigDev,long manufacturer,long product)
  129. {
  130.   BASE_EXT_DECL
  131.   register struct ConfigDev * _res  __asm("d0");
  132.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  133.   register struct ConfigDev *a0 __asm("a0") = oldConfigDev;
  134.   register long d0 __asm("d0") = manufacturer;
  135.   register long d1 __asm("d1") = product;
  136.   __asm __volatile ("jsr a6@(-0x48)"
  137.   : "=r" (_res)
  138.   : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
  139.   : "a0","a1","d0","d1");
  140.   *(char *)a0 = *(char *)a0;
  141.   return _res;
  142. }
  143. static __inline void 
  144. FreeBoardMem (BASE_PAR_DECL unsigned long startSlot,unsigned long slotSpec)
  145. {
  146.   BASE_EXT_DECL
  147.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  148.   register unsigned long d0 __asm("d0") = startSlot;
  149.   register unsigned long d1 __asm("d1") = slotSpec;
  150.   __asm __volatile ("jsr a6@(-0x4e)"
  151.   : /* no output */
  152.   : "r" (a6), "r" (d0), "r" (d1)
  153.   : "a0","a1","d0","d1");
  154. }
  155. static __inline void 
  156. FreeConfigDev (BASE_PAR_DECL struct ConfigDev *configDev)
  157. {
  158.   BASE_EXT_DECL
  159.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  160.   register struct ConfigDev *a0 __asm("a0") = configDev;
  161.   __asm __volatile ("jsr a6@(-0x54)"
  162.   : /* no output */
  163.   : "r" (a6), "r" (a0)
  164.   : "a0","a1","d0","d1");
  165.   *(char *)a0 = *(char *)a0;
  166. }
  167. static __inline void 
  168. FreeExpansionMem (BASE_PAR_DECL unsigned long startSlot,unsigned long numSlots)
  169. {
  170.   BASE_EXT_DECL
  171.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  172.   register unsigned long d0 __asm("d0") = startSlot;
  173.   register unsigned long d1 __asm("d1") = numSlots;
  174.   __asm __volatile ("jsr a6@(-0x5a)"
  175.   : /* no output */
  176.   : "r" (a6), "r" (d0), "r" (d1)
  177.   : "a0","a1","d0","d1");
  178. }
  179. static __inline ULONG 
  180. GetCurrentBinding (BASE_PAR_DECL struct CurrentBinding *currentBinding,unsigned long bindingSize)
  181. {
  182.   BASE_EXT_DECL
  183.   register ULONG  _res  __asm("d0");
  184.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  185.   register struct CurrentBinding *a0 __asm("a0") = currentBinding;
  186.   register unsigned long d0 __asm("d0") = bindingSize;
  187.   __asm __volatile ("jsr a6@(-0x8a)"
  188.   : "=r" (_res)
  189.   : "r" (a6), "r" (a0), "r" (d0)
  190.   : "a0","a1","d0","d1");
  191.   *(char *)a0 = *(char *)a0;
  192.   return _res;
  193. }
  194. static __inline struct DeviceNode *
  195. MakeDosNode (BASE_PAR_DECL APTR parmPacket)
  196. {
  197.   BASE_EXT_DECL
  198.   register struct DeviceNode * _res  __asm("d0");
  199.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  200.   register APTR a0 __asm("a0") = parmPacket;
  201.   __asm __volatile ("jsr a6@(-0x90)"
  202.   : "=r" (_res)
  203.   : "r" (a6), "r" (a0)
  204.   : "a0","a1","d0","d1");
  205.   *(char *)a0 = *(char *)a0;
  206.   return _res;
  207. }
  208. static __inline void 
  209. ObtainConfigBinding (BASE_PAR_DECL0)
  210. {
  211.   BASE_EXT_DECL
  212.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  213.   __asm __volatile ("jsr a6@(-0x78)"
  214.   : /* no output */
  215.   : "r" (a6)
  216.   : "a0","a1","d0","d1");
  217. }
  218. static __inline UBYTE 
  219. ReadExpansionByte (BASE_PAR_DECL APTR board,unsigned long offset)
  220. {
  221.   BASE_EXT_DECL
  222.   register UBYTE  _res  __asm("d0");
  223.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  224.   register APTR a0 __asm("a0") = board;
  225.   register unsigned long d0 __asm("d0") = offset;
  226.   __asm __volatile ("jsr a6@(-0x60)"
  227.   : "=r" (_res)
  228.   : "r" (a6), "r" (a0), "r" (d0)
  229.   : "a0","a1","d0","d1");
  230.   *(char *)a0 = *(char *)a0;
  231.   return _res;
  232. }
  233. static __inline void 
  234. ReadExpansionRom (BASE_PAR_DECL APTR board,struct ConfigDev *configDev)
  235. {
  236.   BASE_EXT_DECL
  237.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  238.   register APTR a0 __asm("a0") = board;
  239.   register struct ConfigDev *a1 __asm("a1") = configDev;
  240.   __asm __volatile ("jsr a6@(-0x66)"
  241.   : /* no output */
  242.   : "r" (a6), "r" (a0), "r" (a1)
  243.   : "a0","a1","d0","d1");
  244.   *(char *)a0 = *(char *)a0;  *(char *)a1 = *(char *)a1;
  245. }
  246. static __inline void 
  247. ReleaseConfigBinding (BASE_PAR_DECL0)
  248. {
  249.   BASE_EXT_DECL
  250.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  251.   __asm __volatile ("jsr a6@(-0x7e)"
  252.   : /* no output */
  253.   : "r" (a6)
  254.   : "a0","a1","d0","d1");
  255. }
  256. static __inline void 
  257. RemConfigDev (BASE_PAR_DECL struct ConfigDev *configDev)
  258. {
  259.   BASE_EXT_DECL
  260.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  261.   register struct ConfigDev *a0 __asm("a0") = configDev;
  262.   __asm __volatile ("jsr a6@(-0x6c)"
  263.   : /* no output */
  264.   : "r" (a6), "r" (a0)
  265.   : "a0","a1","d0","d1");
  266.   *(char *)a0 = *(char *)a0;
  267. }
  268. static __inline void 
  269. SetCurrentBinding (BASE_PAR_DECL struct CurrentBinding *currentBinding,unsigned long bindingSize)
  270. {
  271.   BASE_EXT_DECL
  272.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  273.   register struct CurrentBinding *a0 __asm("a0") = currentBinding;
  274.   register unsigned long d0 __asm("d0") = bindingSize;
  275.   __asm __volatile ("jsr a6@(-0x84)"
  276.   : /* no output */
  277.   : "r" (a6), "r" (a0), "r" (d0)
  278.   : "a0","a1","d0","d1");
  279.   *(char *)a0 = *(char *)a0;
  280. }
  281. static __inline void 
  282. WriteExpansionByte (BASE_PAR_DECL APTR board,unsigned long offset,unsigned long byte)
  283. {
  284.   BASE_EXT_DECL
  285.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  286.   register APTR a0 __asm("a0") = board;
  287.   register unsigned long d0 __asm("d0") = offset;
  288.   register unsigned long d1 __asm("d1") = byte;
  289.   __asm __volatile ("jsr a6@(-0x72)"
  290.   : /* no output */
  291.   : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
  292.   : "a0","a1","d0","d1");
  293.   *(char *)a0 = *(char *)a0;
  294. }
  295. #undef BASE_EXT_DECL
  296. #undef BASE_PAR_DECL
  297. #undef BASE_PAR_DECL0
  298. #undef BASE_NAME
  299.  
  300. __END_DECLS
  301.  
  302. #endif /* _INLINE_EXPANSION_H */
  303.